package com.cty._02_HighQualityCode._21_ReorderArray;

/**
 * @Auther: cty
 * @Date: 2020/7/8 8:12
 * @Description: 面试题21：调整数组顺序使奇数位于偶数前面
 * 题目：输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有
 * 奇数位于数组的前半部分，所有偶数位于数组的后半部分。
 *
 * 考点：扩展性
 * @version: 1.0
 */
public class ReorderArray {

    public static int[] reorderArray(int[] array, int length, Judgement jg){
        if(array==null || length==0)
            return null;

        int lowPtr = 0;
        int highPtr = length-1;

        while (lowPtr < highPtr){
            while(lowPtr<length-1 && jg.judge(array[lowPtr]))
                lowPtr++;

            while(highPtr>0 && !jg.judge(array[highPtr]))
                highPtr--;

            if(lowPtr < highPtr){
                int temp = array[lowPtr];
                array[lowPtr] = array[highPtr];
                array[highPtr] = temp;
            }
        }  // end while true
        return array;

    }  // end ReorderOddEven()

}  // end class
